CLASS class_name "description" SPECIALISES spec_type_or_class_name := [object_assignment];
"class_name" is the name of the class
"description" is a string expression
"spec_type_or_class_name" is the name of the class or type used to specialize from
"object_assignment" is the assignment of the objects in the class
A class that is specialized from another class (or type) has the same signature, but the objects in the class are assigned (replaced) as specified in "object_assignment". This can be done recursively: the object in a class can itself consist of other objects.
Example:
TYPE PhysicalQuantityType "The type of any physical quantity" = RECORD { Quantity : QuantityType; Unit : UnitType; }; CLASS Length "A class for length" SPECIALISES PhysicalQuantityType := {: Quantity <- "Length"; Unit <- "m"; :};